// 双屏巨量百应搜索助手 - 后台脚本
console.log("双屏搜索助手后台脚本已启动");

// 扩展安装时创建右键菜单
chrome.runtime.onInstalled.addListener(() => {
  // 先清除所有已存在的菜单项
  chrome.contextMenus.removeAll(() => {
    if (chrome.runtime.lastError) {
      console.error("清除菜单项失败:", chrome.runtime.lastError);
    } else {
      console.log("已清除所有菜单项");
    }
    
    // 创建"设置为副屏窗口"菜单项（仅在页面上显示，不在选中文本上显示）
    chrome.contextMenus.create({
      id: "setSecondaryWindow",
      title: "设置为副屏窗口",
      contexts: ["page"]  // 仅在页面上显示（空白处右键）
    }, () => {
      if (chrome.runtime.lastError) {
        console.error("创建'设置为副屏窗口'菜单失败:", chrome.runtime.lastError);
      } else {
        console.log("'设置为副屏窗口'菜单创建成功");
      }
    });
    
    // 创建"在副屏百度搜索"菜单项（仅在选中文本时显示）
    chrome.contextMenus.create({
      id: "dualScreenSearch",
      title: "在副屏巨量百应搜索",
      contexts: ["selection"]  // 仅在选中文本时显示
    }, () => {
      if (chrome.runtime.lastError) {
        console.error("创建'在副屏百度搜索'菜单失败:", chrome.runtime.lastError);
      } else {
        console.log("'在副屏巨量百应搜索'菜单创建成功");
      }
    });
    
    console.log("所有右键菜单已创建");
  });
});

// 监听右键菜单点击事件
chrome.contextMenus.onClicked.addListener((info, tab) => {
  console.log("菜单点击事件:", info);
  
  if (info.menuItemId === "dualScreenSearch" && info.selectionText) {
    console.log("执行副屏搜索:", info.selectionText);
    performDualScreenSearch(info.selectionText);
  } else if (info.menuItemId === "setSecondaryWindow") {
    console.log("设置副屏窗口:", tab.windowId);
    setSecondaryWindow(tab.windowId);
  }
});

// 设置副屏窗口
function setSecondaryWindow(windowId) {
  chrome.storage.local.set({secondaryWindowId: windowId}, function() {
    console.log("副屏窗口已设置，ID:", windowId);
    
    // 给用户反馈
    chrome.notifications.create({
      type: "basic",
      iconUrl: "images/icon48.png",
      title: "双屏搜索助手",
      message: "已将当前窗口设置为副屏窗口"
    }, (notificationId) => {
      if (chrome.runtime.lastError) {
        console.error("创建通知失败:", chrome.runtime.lastError);
      }
    });
  });
}

// 在副屏执行巨量百应搜索
function performDualScreenSearch(selectedText) {
  // 巨量百应搜索页面URL
  const searchUrl = "https://buyin.jinritemai.com/dashboard/merch-picking-library?btm_ppre=a0.b0.c0.d0&btm_pre=a10091.b089178.c809509.d0&btm_show_id=db800935-305b-4f8a-a6c6-e8ae96b625f0&pre_universal_page_params_id=&universal_page_params_id=1494e2b8-7927-43dd-901f-c7a6b710c4a2";
  
  console.log("执行双屏搜索:", selectedText);
  
  // 获取副屏窗口ID
  chrome.storage.local.get(['secondaryWindowId'], function(result) {
    const secondaryWindowId = result.secondaryWindowId;
    
    if (secondaryWindowId) {
      // 在副屏窗口中查找巨量百应标签页
      findOrCreateTabInWindow(secondaryWindowId, searchUrl, selectedText);
    } else {
      // 如果没有设置副屏窗口，显示通知告知用户需要先设置
      chrome.notifications.create({
        type: "basic",
        iconUrl: "images/icon48.png",
        title: "双屏搜索助手",
        message: "请先在副屏巨量百应页面右键选择'设置为副屏窗口'"
      });
    }
  });
}

// 在副屏窗口中查找巨量百应标签页并执行搜索
function findOrCreateTabInWindow(windowId, searchUrl, selectedText) {
  console.log("在副屏窗口中查找巨量百应标签页，窗口ID:", windowId);
  
  // 先检查窗口是否存在
  chrome.windows.get(windowId, function(window) {
    if (chrome.runtime.lastError) {
      console.log("副屏窗口不存在");
      // 显示通知告知用户需要先设置副屏窗口
      chrome.notifications.create({
        type: "basic",
        iconUrl: "images/icon48.png",
        title: "双屏搜索助手",
        message: "请先在副屏巨量百应页面右键选择'设置为副屏窗口'"
      });
    } else {
      // 在指定窗口中查找巨量百应标签页
      chrome.tabs.query({windowId: windowId, url: "*://buyin.jinritemai.com/*"}, function(tabs) {
        if (tabs && tabs.length > 0) {
          // 如果找到了巨量百应标签页，直接使用它
          const tab = tabs[0];
          console.log("找到已存在的巨量百应标签页:", tab.id);
          
          // 激活标签页
          chrome.tabs.update(tab.id, {active: true}, function() {
            // 聚焦到副屏窗口
            chrome.windows.update(windowId, {focused: true});
            
            // 直接在现有页面中执行搜索，不需要重新加载页面
            setTimeout(() => {
              executeSearchInTab(tab.id, selectedText);
            }, 1000);
          });
        } else {
          // 如果没有找到巨量百应标签页，显示通知
          console.log("未找到巨量百应标签页");
          chrome.notifications.create({
            type: "basic",
            iconUrl: "images/icon48.png",
            title: "双屏搜索助手",
            message: "请先在副屏打开巨量百应页面"
          });
        }
      });
    }
  });
}


// 在指定标签页中执行搜索操作
function executeSearchInTab(tabId, searchText) {
  console.log("在标签页中执行搜索:", tabId, searchText);
  
  // 在目标标签页中执行JavaScript代码
  chrome.scripting.executeScript({
    target: { tabId: tabId },
    func: performSearchOnPage,
    args: [searchText]
  }, (result) => {
    if (chrome.runtime.lastError) {
      console.error("执行脚本失败:", chrome.runtime.lastError);
    } else {
      console.log("搜索脚本执行成功");
    }
  });
}

// 在页面上执行的实际搜索函数
function performSearchOnPage(searchText) {
  // 查找输入框并填入搜索文本
  const searchInput = document.getElementById('rc_select_0');
  if (searchInput) {
    // 清空输入框
    searchInput.value = '';
    // 输入搜索文本
    searchInput.value = searchText;
    
    // 触发输入事件
    const inputEvent = new Event('input', { bubbles: true });
    searchInput.dispatchEvent(inputEvent);
    
    // 触发change事件
    const changeEvent = new Event('change', { bubbles: true });
    searchInput.dispatchEvent(changeEvent);
    
    console.log("已在输入框中填入搜索文本:", searchText);
    
    // 查找搜索按钮并点击
    const searchButton = document.querySelector('button.auxo-btn.auxo-btn-primary.searchInput__button');
    if (searchButton) {
      searchButton.click();
      console.log("已点击搜索按钮");
    } else {
      console.error("未找到搜索按钮");
    }
  } else {
    console.error("未找到搜索输入框");
  }
}